অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) হল একটি ওপেন সোর্স লাইব্রেরি যা Java প্রোগ্রামিং ভাষায় বিভিন্ন ধরনের উন্নত ডেটা স্ট্রাকচার এবং কনভেনিয়েন্ট ইউটিলিটি ক্লাস প্রদান করে। এটি অ্যাপাচি কমন্স লাইব্রেরির একটি অংশ এবং মূলত Java Collections Framework এর বাইরের কিছু অতিরিক্ত ডেটা স্ট্রাকচার এবং ইউটিলিটি ফাংশন সরবরাহ করে। এই লাইব্রেরিটি Java Collections API এর স্ট্যান্ডার্ড কার্যকলাপের পরিপূরক হিসেবে কাজ করে এবং বিভিন্ন ধরনের এডভান্সড ডেটা স্ট্রাকচার, যেমন Bag
, BidiMap
, MultiMap
, Deque
, এবং আরও অনেক কিছু সরবরাহ করে।
অ্যাপাচি কমন্স কালেকশনস লাইব্রেরি বিশেষভাবে উপকারী যখন আপনি কাস্টম কালেকশন, ডেটা ফিল্টারিং, ট্রান্সফরমেশন এবং অন্যান্য স্ট্রিং এবং কালেকশন ম্যানিপুলেশন সম্পর্কিত কার্যকলাপ করতে চান। এটি কোডিংয়ের জটিলতা কমায় এবং কাজের গতি বাড়ায়।
অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির প্রধান উদ্দেশ্য হল Java ডেভেলপারদের জন্য একাধিক শক্তিশালী এবং কার্যকরী ডেটা স্ট্রাকচার সরবরাহ করা, যাতে তারা বিভিন্ন ধরনের ডেটা ম্যানিপুলেশন সহজে করতে পারে। এতে কাস্টম ডেটা স্ট্রাকচার ও ইউটিলিটি ক্লাস রয়েছে যা Java Collections Framework এর স্ট্যান্ডার্ড ক্লাসগুলির বাইরেও কিছু অতিরিক্ত সুবিধা প্রদান করে।
এটি ডেভেলপারদের জন্য সরবরাহ করে:
অ্যাপাচি কমন্স কালেকশনস লাইব্রেরি Java প্রোগ্রামে কালেকশন ম্যানিপুলেশনকে আরও শক্তিশালী এবং সহজ করে তোলে। এর কিছু বৈশিষ্ট্য এবং কার্যক্ষমতা হল:
Bag একটি ডেটা স্ট্রাকচার যা একটি নির্দিষ্ট আইটেমের উপস্থিতি গণনা করে। এটি মূলত Map
এর মতো কাজ করে, তবে এখানে আপনি আইটেমের সংখ্যা (frequency) ট্র্যাক করতে পারেন।
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
Bag<String> bag = new HashBag<>();
bag.add("apple");
bag.add("banana");
bag.add("apple");
System.out.println("Count of apple: " + bag.getCount("apple")); // Output: 2
BidiMap হল একটি দ্বিমুখী ম্যাপ, যা মান এবং কী উভয় দিকে অ্যাক্সেস করার সুবিধা প্রদান করে।
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.map.HashBidiMap;
BidiMap<String, String> bidiMap = new HashBidiMap<>();
bidiMap.put("one", "1");
bidiMap.put("two", "2");
System.out.println(bidiMap.get("one")); // Output: 1
System.out.println(bidiMap.getKey("2")); // Output: two
MultiMap হল একটি বিশেষ ধরনের ম্যাপ যা একাধিক মানকে একটি কী এর সাথে অ্যাসোসিয়েট করতে সক্ষম।
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
import org.apache.commons.collections4.map.HashedMap;
MultiMap<String, String> multiMap = new MultiValueMap<>();
multiMap.put("fruit", "apple");
multiMap.put("fruit", "banana");
multiMap.put("vegetable", "carrot");
System.out.println(multiMap.get("fruit")); // Output: [apple, banana]
Deque হল একটি ডাবল-এন্ডেড কিউ, যা একে অপরের বিপরীতে আইটেম ইনসার্ট এবং রিমুভ করার সুবিধা প্রদান করে।
import org.apache.commons.collections4.Queue;
import org.apache.commons.collections4.queue.CircularFifoQueue;
Deque<String> deque = new CircularFifoQueue<>(5);
deque.add("apple");
deque.add("banana");
deque.add("cherry");
System.out.println(deque); // Output: [apple, banana, cherry]
অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরি Java ডেভেলপারদের জন্য একটি অত্যন্ত কার্যকরী টুল, যা উন্নত ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস সরবরাহ করে। এটি Bag, BidiMap, MultiMap, Deque সহ আরও অনেক বিশেষ ধরনের ডেটা স্ট্রাকচার সরবরাহ করে যা স্ট্যান্ডার্ড Java Collections API এর বাইরের কাজগুলো সহজ করে তোলে। এটি ডেটা ম্যানিপুলেশন, ট্রান্সফরমেশন, ফিল্টারিং এবং অন্যান্য কার্যক্রম দ্রুত এবং কার্যকরীভাবে সম্পাদন করতে সহায়তা করে।
Apache Commons Collections হল একটি ওপেন সোর্স লাইব্রেরি যা Java Collections Framework (JCF) এর উপর ভিত্তি করে অতিরিক্ত ডেটা স্ট্রাকচার এবং ইউটিলিটি ফাংশন সরবরাহ করে। এটি Java প্রোগ্রামিং ভাষায় ব্যবহৃত একটি খুবই জনপ্রিয় লাইব্রেরি যা ডেটা স্টোরেজ, ম্যানিপুলেশন এবং অ্যাক্সেস করার জন্য অতিরিক্ত কার্যকারিতা প্রদান করে।
Apache Commons Collections এর মূল উদ্দেশ্য হল Java Collections Framework এর সীমানা ছাড়িয়ে গিয়ে আরও কার্যকরী ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস প্রদান করা। Java Collections Framework মূলত List, Set, Map এবং Queue এ কাজ করে, তবে Apache Commons Collections Java-এর সাধারণ কালেকশনগুলোর মধ্যে অতিরিক্ত ক্ষমতা যোগ করে। এই লাইব্রেরিটি Bag, MultiMap, BidiMap, ListOrderedMap, LIFO/FIFO Queue ইত্যাদি নতুন ডেটা স্ট্রাকচার সরবরাহ করে যা Java Collections Framework-এ বিদ্যমান নেই।
Apache Commons Collections বিভিন্ন ধরনের কার্যকারিতা এবং ডেটা স্ট্রাকচার প্রদান করে, কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য নিম্নরূপ:
Bag একটি বিশেষ ধরনের কালেকশন যা উপাদানগুলির উপস্থিতি সংখ্যা সংরক্ষণ করে। এর মানে হল যে, একটি উপাদান একাধিকবার থাকতে পারে।
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class BagExample {
public static void main(String[] args) {
Bag<String> bag = new HashBag<>();
bag.add("apple");
bag.add("banana");
bag.add("apple");
System.out.println("Bag contents: " + bag);
System.out.println("apple count: " + bag.getCount("apple"));
}
}
এখানে:
HashBag
হল Bag ইমপ্লিমেন্টেশন, যা উপাদানগুলির উপস্থিতি গণনা করে এবং getCount()
ফাংশনটি নির্দিষ্ট উপাদানটির উপস্থিতির সংখ্যা প্রদর্শন করে।BidiMap একটি ম্যাপ যেখানে কী এবং ভ্যালু উভয়ই একে অপরের সাথে সম্পর্কযুক্ত। আপনি কী থেকে ভ্যালু এবং ভ্যালু থেকে কী দুটোই এক্সেস করতে পারেন।
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.map.HashedMap;
public class BidiMapExample {
public static void main(String[] args) {
BidiMap<String, String> bidiMap = new HashedMap<>();
bidiMap.put("apple", "fruit");
bidiMap.put("carrot", "vegetable");
System.out.println("apple is a " + bidiMap.get("apple"));
System.out.println("fruit is a " + bidiMap.getKey("fruit"));
}
}
এখানে:
HashedMap
একটি BidiMap ইমপ্লিমেন্টেশন, যা কী এবং ভ্যালু উভয়ের জন্য মিউটেবল (bidirectional) এক্সেস সরবরাহ করে।getKey()
ফাংশনটি ভ্যালু থেকে কী বের করার সুযোগ দেয়।MultiMap একটি ম্যাপ যেখানে প্রতিটি কী একাধিক ভ্যালুর সাথে সম্পর্কিত থাকে। এটি সাধারণত যখন আপনি একটি কী-এর জন্য একাধিক মানের প্রয়োজন হয়, তখন ব্যবহৃত হয়।
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
public class MultiMapExample {
public static void main(String[] args) {
MultiMap<String, String> multiMap = new MultiValueMap<>();
multiMap.put("fruits", "apple");
multiMap.put("fruits", "banana");
multiMap.put("fruits", "orange");
System.out.println("fruits: " + multiMap.get("fruits"));
}
}
এখানে:
MultiValueMap
একটি MultiMap ইমপ্লিমেন্টেশন, যা একই কী-এর জন্য একাধিক মান সংরক্ষণ করতে সক্ষম।put()
ফাংশনটি কী-এর সাথে একাধিক মান সংযুক্ত করে।ListOrderedMap একটি ম্যাপ যা তালিকার মতো আচরণ করে এবং উপাদানগুলি ইনসার্ট করা অর্ডারে সংরক্ষণ করে। এটি সাধারণভাবে অর্ডারযুক্ত ম্যাপের মতো কাজ করে।
আপনি যদি Apache Commons Collections ব্যবহার করতে চান, তবে আপনাকে এটি আপনার প্রোজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
এটি আপনার প্রোজেক্টে Apache Commons Collections লাইব্রেরি যুক্ত করবে।
Apache Commons Collections একটি শক্তিশালী Java লাইব্রেরি যা Java Collections Framework-এর বাইরে অতিরিক্ত ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস সরবরাহ করে। এতে Bag, BidiMap, MultiMap, ListOrderedMap, LIFO/FIFO Queue সহ উন্নত ডেটা স্ট্রাকচার রয়েছে, যা অনেক পরিস্থিতিতে কাজে আসে। এটি Java-এর স্ট্যান্ডার্ড কালেকশন ফ্রেমওয়ার্কের সাথে পুরোপুরি সামঞ্জস্যপূর্ণ এবং ডেটা স্টোরেজ, ম্যানিপুলেশন এবং অ্যাক্সেসের জন্য অতিরিক্ত কার্যকারিতা প্রদান করে।
Apache Commons Collections একটি Java লাইব্রেরি যা Java Collections Framework (JCF) এর উপর ভিত্তি করে তৈরি। এই লাইব্রেরি মূলত Java Collections Framework এর সক্ষমতাকে বৃদ্ধি করার জন্য ডিজাইন করা হয়েছে। এটি অতিরিক্ত collections এবং utility ক্লাস সরবরাহ করে যা JCF-এ অন্তর্ভুক্ত নয়।
Collection Framework (JCF) Java প্ল্যাটফর্মের একটি গুরুত্বপূর্ণ অংশ যা ডেটা সংগ্রহের জন্য বিভিন্ন ডেটা স্ট্রাকচার এবং ইন্টারফেস প্রদান করে। Apache Commons Collections এই ফ্রেমওয়ার্কের উপর ভিত্তি করে ডেটা ম্যানিপুলেশন এবং সংগ্রহের আরও উন্নত সুবিধা প্রদান করে।
Collection Framework মূলত Java Collections Framework (JCF) এর একটি কম্পোনেন্ট যা Java প্রোগ্রামিং ভাষায় বিভিন্ন ধরনের ডেটা সংগ্রহ ও ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়। এটি ডেটা স্ট্রাকচার বা collections (যেমন, লিস্ট, সেট, ম্যাপ ইত্যাদি) প্রদান করে এবং তাদের উপর বিভিন্ন ধরনের অপারেশন (যেমন, ইনসার্ট, রিমুভ, সোর্ট ইত্যাদি) সম্পাদন করতে সাহায্য করে।
Collection Framework এর প্রধান লক্ষ্য:
Apache Commons Collections হল Apache Commons প্রকল্পের একটি অংশ যা Java Collections Framework (JCF)-এর জন্য অতিরিক্ত ডেটা স্ট্রাকচার, ইউটিলিটি ক্লাস এবং মেথড সরবরাহ করে। এটি Java প্রোগ্রামিং ভাষায় ডেটা ম্যানিপুলেশন ও সংগঠনের জন্য শক্তিশালী এবং উন্নত ফিচার প্রদান করে।
Apache Commons Collections ফ্রেমওয়ার্কের সুবিধা:
উদাহরণ:
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
Bag<String> bag = new HashBag<>();
bag.add("apple");
bag.add("apple");
bag.add("banana");
System.out.println(bag); // Output: [apple x 2, banana x 1]
উদাহরণ:
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.map.HashBidiMap;
BidiMap<String, String> bidiMap = new HashBidiMap<>();
bidiMap.put("one", "1");
bidiMap.put("two", "2");
System.out.println(bidiMap.get("one")); // Output: 1
System.out.println(bidiMap.getKey("2")); // Output: two
উদাহরণ:
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
MultiMap<String, String> multiMap = new MultiValueMap<>();
multiMap.put("apple", "fruit");
multiMap.put("apple", "red");
multiMap.put("banana", "fruit");
System.out.println(multiMap); // Output: {apple=[fruit, red], banana=[fruit]}
উদাহরণ:
import org.apache.commons.collections4.Queue;
import org.apache.commons.collections4.queue.CircularFifoQueue;
Queue<String> queue = new CircularFifoQueue<>(3);
queue.add("apple");
queue.add("banana");
queue.add("cherry");
System.out.println(queue); // Output: [apple, banana, cherry]
queue.add("date");
System.out.println(queue); // Output: [banana, cherry, date]
উদাহরণ:
import org.apache.commons.collections4.IteratorUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Iterator;
List<String> list = Arrays.asList("apple", "banana", "cherry");
Iterator<String> iterator = list.iterator();
// Filtering
Iterator<String> filteredIterator = IteratorUtils.filteredIterator(iterator, item -> item.startsWith("b"));
while(filteredIterator.hasNext()) {
System.out.println(filteredIterator.next()); // Output: banana
}
Apache Commons Collections হল একটি শক্তিশালী লাইব্রেরি যা Java Collections Framework (JCF) এর উপর ভিত্তি করে অতিরিক্ত ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস প্রদান করে। এটি Java প্রোগ্রামিং ভাষায় ডেটা ম্যানিপুলেশন ও সংগঠনের কাজকে আরও সহজ, কার্যকরী এবং ফ্লেক্সিবল করে তোলে। Bag, BidiMap, MultiMap, এবং Queue এর মতো ক্লাসগুলো ডেটা সংগ্রহের জন্য নতুন ধারণা নিয়ে এসেছে, যা JCF এর সীমাবদ্ধতাকে ছাড়িয়ে যেতে সাহায্য করে।
Apache Commons Collections এবং Java Collections Framework (JCF) উভয়ই Java ডিপেনডেন্সি ম্যানেজমেন্ট এবং ডাটা স্ট্রাকচার ব্যবস্থাপনার জন্য ব্যবহৃত হয়, তবে এদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। JCF Java-এর স্ট্যান্ডার্ড লাইব্রেরির অংশ, যেখানে সাধারণ ডাটা স্ট্রাকচার এবং তাদের জন্য বিভিন্ন ইন্টারফেস এবং ক্লাস রয়েছে। অপরদিকে, Apache Commons Collections হল একটি লাইব্রেরি যা Java Collections Framework এর উপর ভিত্তি করে উন্নত ফিচার এবং বিকল্প ডাটা স্ট্রাকচার সরবরাহ করে।
এই লেখায় আমরা আলোচনা করব Apache Commons Collections এবং Java Collections Framework এর মধ্যে প্রধান পার্থক্যগুলো।
Java Collections Framework (JCF):
Apache Commons Collections:
উদাহরণ:
Bag<String> bag = new HashBag<>();
bag.add("apple");
bag.add("apple");
bag.add("banana");
এখানে Bag Java Collections Framework এর অংশ নয়, এটি Apache Commons Collections এর একটি বিশেষ ডাটা স্ট্রাকচার।
Java Collections Framework (JCF):
Apache Commons Collections:
Maven ডিপেনডেন্সি উদাহরণ:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
এখানে আপনি Apache Commons Collections লাইব্রেরি Maven-এর মাধ্যমে আপনার প্রোজেক্টে অন্তর্ভুক্ত করছেন।
Java Collections Framework (JCF):
Apache Commons Collections:
Java Collections Framework (JCF):
Apache Commons Collections:
উদাহরণ:
Collection<String> collection = Arrays.asList("apple", "banana", "cherry");
Collection<String> filtered = CollectionUtils.select(collection, new Predicate<String>() {
public boolean evaluate(String item) {
return item.startsWith("a");
}
});
এখানে:
Java Collections Framework (JCF):
Apache Commons Collections:
Java Collections Framework (JCF) এবং Apache Commons Collections উভয়ই গুরুত্বপূর্ণ, তবে তারা ভিন্ন উদ্দেশ্যে ব্যবহৃত হয়। JCF একটি মৌলিক ও স্ট্যান্ডার্ড ডিপেনডেন্সি লাইব্রেরি যা Java-তে সাধারণ কালেকশন ব্যবস্থাপনা প্রদান করে। অপরদিকে, Apache Commons Collections Java Collections Framework এর উপর ভিত্তি করে অতিরিক্ত ডাটা স্ট্রাকচার এবং ইউটিলিটি ফাংশনালিটি প্রদান করে, যেমন MultiMap, Bag, BidiMap ইত্যাদি, যা JCF-এ নেই। এটি ফিল্টারিং, প্রেডিকেট, ট্রান্সফরমেশন, এবং Immutable Collections তৈরি করার সুবিধাও প্রদান করে।
Apache Commons Collections একটি উন্নত ফিচার এবং কাস্টমাইজেশন প্রদান করে, যা বিশেষ করে বড় এবং জটিল প্রোজেক্টগুলির জন্য উপকারী।
Apache Commons Collections একটি ওপেন সোর্স Java লাইব্রেরি যা Java Collections Framework (JCF) এর ওপর ভিত্তি করে কাজ করে এবং বিভিন্ন ডেটা স্ট্রাকচার ও ইউটিলিটি ক্লাস সরবরাহ করে। এটি Java ডেভেলপারদের জন্য একটি অত্যন্ত শক্তিশালী টুল, যা JCF এর সীমাবদ্ধতাগুলি পূর্ণ করে এবং আরও শক্তিশালী এবং নমনীয় কালেকশন ক্লাস তৈরি করতে সহায়তা করে। এটি বিশেষভাবে লজিকাল অপারেশন এবং কাস্টম ডেটা স্ট্রাকচার তৈরি করার জন্য ব্যবহৃত হয়।
Additional Data Structures (অতিরিক্ত ডেটা স্ট্রাকচার):
Bag bag = new HashBag();
bag.add("apple");
bag.add("banana");
bag.add("apple");
MultiMap multiMap = new MultiHashMap();
multiMap.put("fruit", "apple");
multiMap.put("fruit", "banana");
multiMap.put("fruit", "orange");
Collection Decorators (কলেকশন ডেকোরেটর):
List<String> list = new ArrayList<>();
List<String> synchronizedList = Collections.synchronizedList(list);
Predicate and Function (প্রেডিকেট এবং ফাংশন):
List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = CollectionUtils.select(list, new Predicate() {
public boolean evaluate(Object o) {
return ((String) o).startsWith("a");
}
});
Iterators and Iterables (ইটারেটর এবং ইটারেবল):
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
Transformation and Filtering (রূপান্তর এবং ফিল্টারিং):
List<String> transformedList = (List<String>) CollectionUtils.collect(list, new Transformer() {
public Object transform(Object input) {
return ((String) input).toUpperCase();
}
});
Transformer
, Predicate
, Filter
এর মতো ফিচার ব্যবহার করে, যা কাজের গতি বৃদ্ধি করে।CollectionUtils
:
List<String> list = Arrays.asList("apple", "banana", "orange");
CollectionUtils.addAll(list, new String[] {"grape", "kiwi"});
IteratorUtils
:
Iterator<String> iterator = IteratorUtils.arrayIterator(new String[] {"apple", "banana", "orange"});
Bag
:
Bag bag = new HashBag();
bag.add("apple");
bag.add("banana");
MultiMap
:
MultiMap multiMap = new MultiHashMap();
multiMap.put("fruit", "apple");
multiMap.put("fruit", "banana");
multiMap.put("fruit", "orange");
TransformedCollection
:
Collection<String> transformed = new TransformedCollection(list, new Transformer() {
public Object transform(Object input) {
return ((String) input).toUpperCase();
}
});
Apache Commons Collections হল একটি শক্তিশালী এবং নমনীয় Java লাইব্রেরি যা Java Collections Framework (JCF)-এর ক্ষমতাকে বাড়িয়ে দেয়। এটি উন্নত ডেটা স্ট্রাকচার, ফাংশনালিটিজ, ইউটিলিটি ক্লাস, এবং অপারেশন সরবরাহ করে যা ডেভেলপারদের জন্য ডেটা ম্যানিপুলেশন আরও সহজ এবং কার্যকরী করে তোলে। আপনি যদি কাস্টম ডেটা স্ট্রাকচার বা অতিরিক্ত ফিচার খুঁজছেন, তাহলে Commons Collections আপনার জন্য একটি অসাধারণ টুল হতে পারে।
common.read_more